package ejemplo;

import java.io.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;

public class Insert extends HttpServlet {

  private AccesoDatos ad;
  private ResultSet rs;
  private MyTableModel mtb;
  private String mensaje;
   
  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {} 

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {} 

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
    RequestDispatcher rd;
    rd=request.getRequestDispatcher("/add");
    String table=request.getParameter("table");
    try{
       ad = new AccesoDatos("gencod");
       if(table.equals("libros")){
         String isbn=request.getParameter("isbn");
         String titulo=request.getParameter("titulo");
         String autor=request.getParameter("autor");
         String precio=request.getParameter("precio");
         String idtema=request.getParameter("idtema");
         isbn = isbn.trim();
         titulo = titulo.trim();
         autor = autor.trim();
         precio = precio.trim();
         idtema = idtema.trim();
         if(isbn.isEmpty() || titulo.length() < 5 || autor.length() < 10
            || precio.isEmpty() || idtema.isEmpty())
            mensaje="Error: El titulo es corto (< 5 letras), el nombre " +
            "del autor es corto (< 10 letras) o algun otro campo esta vacio";
         else{
             rs = ad.getLibro(isbn);
             mtb = new MyTableModel(rs);
             if(mtb.getRowCount() > 0)
                mensaje="Error: Ya existe un libro con el mismo isbn";            
             else
               if(ad.insertLibro(isbn, titulo, autor, precio, idtema) == 0)
                  mensaje="Error: No se pudo ingresar libro";              
               else
                  mensaje="Se añadio libro exitosamente (isbn " + isbn + ")";
         } //endelse (paso la 1era validacion)
       } //endif(table.equals("libros"))
       else if(table.equals("temas")){
         String tema=request.getParameter("tema");
         tema = tema.trim();
         if(tema.length() < 5){
            mensaje="Error: Tema muy corto (< 5 letras)";
         }
         else{
             rs =  ad.getTemas(tema);
             mtb = new MyTableModel(rs);
             boolean found = false;
             for (int row = 0; row < mtb.getRowCount(); row++)
               if(mtb.getValueAt(row, 1).equals(tema)){
                  found = true;
                  mensaje="Error: Ya existe tema con mismo nombre";
                  break;
               } //endif
             if(found == false)
                if(ad.insertTema(tema) == 0)
                   mensaje="Error: No se pudo ingresar tema";                
                else 
                   mensaje="Se añadio tema " + tema + " exitosamente";
         } // else(tema.length >= 5)
       } // end elseif(table.equals("temas"))
       request.setAttribute("mensaje",mensaje);
       rd.forward(request,response);
    } catch(ClassNotFoundException cnfe){
      rd=request.getRequestDispatcher("/index");
      mensaje="Error fatal. Excepcion de clase no encontrada: " + cnfe.getMessage();
      request.setAttribute("mensaje",mensaje);
      rd.forward(request,response);
    } catch(SQLException sqle){
      rd=request.getRequestDispatcher("/index");
      mensaje="Error fatal. Excepcion de SQL: " + sqle.getErrorCode();
      request.setAttribute("mensaje",mensaje);
      rd.forward(request,response);
    }
  }

  @Override
  public String getServletInfo(){ return "Short description"; }
}